package com.heima.article.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.*;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.article.vos.CommentArticleVo;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.search.vos.SearchArticleVo;
import com.heima.model.wemedia.dtos.CommentDto;
import com.heima.model.wemedia.dtos.ManageDto;
import com.heima.model.wemedia.dtos.CommentPageDto;
import com.heima.model.wemedia.dtos.CommentStatusManageDto;
import com.heima.model.wemedia.dtos.StatisticsDto;

import java.util.Date;
import java.util.List;

public interface ApArticleService extends IService<ApArticle> {

    /**
     * @Description: 加载文章列表
     * @Param:
     * @return: com.heima.model.common.dtos.ResponseResult
     * @Author: tyz
     * @Date: 2023/6/5
     */
    ResponseResult load(ArticleHomeDto dto, Short loadtypeLoadNew);

    /**
     * 保存或者修改文章
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 根据articleId获取ESVO
     *
     * @param id
     * @return
     */
    ResponseResult<SearchArticleVo> getESVoById(Long id);

    /**
     * 加载文章行为
     *
     * @param dto
     * @return
     */
    ResponseResult loadBehavior(LoadBehaviorDto dto);

    /**
     * 查询五天内的所有文章
     *
     * @param date
     * @return
     */
    List<ApArticle> findArticleListByLast5days(Date date);

    /**
     * 加载首页
     *
     * @param dto
     * @param loadtypeLoadMore
     * @return
     */
    ResponseResult loadFirstPage(ArticleHomeDto dto, Short loadtypeLoadMore);

    /**
     * 时事热点新闻计算
     *
     * @param message
     */
    void updateScore(String message);

    ResponseResult findArticleComment(ApArticleCommentDto apArticleCommentDto);

    /**
     * 开启和关闭文章可评论功能
     * @param apArticleOpenCommentDto
     * @return
     */
    ResponseResult openComment(ApArticleOpenCommentDto apArticleOpenCommentDto);

    /**
     * 查询点赞和收藏
     * @param wmUserId
     * @param beginDate
     * @param endDate
     * @return
     */
    ResponseResult queryLikesAndConllections(Integer wmUserId, Date beginDate, Date endDate);

    /**
     * 分页查询 图文统计
     * @param dto
     * @return
     */
    PageResponseResult newPage(StatisticsDto dto);

    /**
     * 分页查询文章数据
     * @Description
     * @Author YangJiangPing
     * @Date 15:50 2023/6/28
     * @Param [dto]
     * @return com.heima.model.common.dtos.ResponseResult
     **/
    PageResponseResult findNewsComments(CommentPageDto dto);

    /**
     * @description: 根据创建时间和分页条件查询上架的文章评论概览
     * @param: dto
     * @return: com.heima.model.common.dtos.ResponseResult
     * @author: liyong
     * @date: 2023/06/28 17:05
     */
    PageResponseResult pageCommentArticle(ManageDto dto);

    /**
     * @description: 修改文章可评论状态
     * @param: dto
     * @return: com.heima.model.common.dtos.ResponseResult
     * @author: liyong
     * @date: 2023/06/28 21:54
     */
    ResponseResult updateStatus(CommentDto dto);

}
